package com.redis.util;

import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;

/**
 * @Author Tanyu
 * @Date 2020/6/1 15:24
 * @Description 简单演示StringRedisTemplate方法使用，如设置过期时间600秒
 * @Version 1.0
 */
public class StringRedisTemplateUtils {

  //先引入StringRedisTemplate
  @Autowired
  private StringRedisTemplate stringRedisTemplate;


  public void stringRedis() {
    //向redis里存入数据和设置缓存时间
    stringRedisTemplate.opsForValue().set("redis", "100", 60 * 10, TimeUnit.SECONDS);

    //val做-1操作
    stringRedisTemplate.boundValueOps("redis").increment(-1);

    //val +1
    stringRedisTemplate.boundValueOps("redis").increment(1);

    //根据key获取缓存中的val
    stringRedisTemplate.opsForValue().get("redis");

    //根据key获取过期时间
    stringRedisTemplate.getExpire("redis");

    //根据key获取过期时间并换算成指定单位
    stringRedisTemplate.getExpire("redis", TimeUnit.SECONDS);

    //根据key删除缓存
    stringRedisTemplate.delete("redis");

    //检查key是否存在，返回boolean值
    stringRedisTemplate.hasKey("redis");

    //向指定key中存放set集合
    stringRedisTemplate.opsForSet().add("redis", "1", "2", "3");

    //设置过期时间
    stringRedisTemplate.expire("redis", 1000, TimeUnit.MILLISECONDS);

    //根据key查看集合中是否存在指定数据
    stringRedisTemplate.opsForSet().isMember("redis", "1");

    //根据key获取set集合
    stringRedisTemplate.opsForSet().members("redis");

    //验证有效时间
    Long redis = stringRedisTemplate.boundHashOps("redis").getExpire();
    System.out.println("redis有效时间：" + redis + "秒");

  }

}
